Kent Beck 跟 Martin Fowler 討論,是要透過自訂中繼的結果來驗證 dependency 的物件,還是要使用 mock object 來驗證。
兩者的取捨為何?請看這篇文章。
--
這個問題在實務上其實很常會出現,但就像文章中講的,這是個 tradeoff 的決定而已。
我自己的基本原則有幾個:
①先從簡單、好懂、可行的方式來做(剃刀法則)
②實務上碰到問題時,回過頭來思考,是否需要調整。因為如果需要調整的設計,是之前那個簡單好懂的設計,那要調整它的成本是低的。
這樣在絕大部分的情況下,可能有 9 成的設計仍然保持著最簡單好懂的方式,不會額外多花不必要的力氣。
我的實務經驗是,必須透過 mock 才能驗證的情況,大概還是 5%~10% 而已。而這 5%~10%, 可能還有一部分是被 integration testing 所涵蓋。